/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.*;

/**
 *
 * @author Gilberto
 */
@Entity
@Table(name = "nfe_entrada_cabecalho")
@NamedQueries({
    @NamedQuery(name = "NfeEntradaCabecalho.findAll", query = "SELECT n FROM NfeEntradaCabecalho n")})
public class NfeEntradaCabecalho implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Integer id;
    @Column(name = "NUMERO_NFE")
    private String numeroNfe;
    @Column(name = "SERIE")
    private String serie;
    @Column(name = "DATA_EMISSAO")
    @Temporal(TemporalType.DATE)
    private Date dataEmissao;
    @Column(name = "VOLUME_QTD")
    private Long volumeQtd;
    @Column(name = "ESPECIE_VOLUME")
    private String especieVolume;
    @Column(name = "PESO_LIQUIDO")
    private Long pesoLiquido;
    @Column(name = "PESO_BRUTO")
    private Long pesoBruto;
    @Column(name = "CHAVE_ACESSO")
    private String chaveAcesso;
    @Column(name = "DATA_SAIDA")
    @Temporal(TemporalType.DATE)
    private Date dataSaida;
    @Column(name = "BASE_CALCULO_ICMS")
    private Long baseCalculoIcms;
    @Column(name = "VALOR_TOTAL_FRETE")
    private Long valorTotalFrete;
    @Column(name = "VALOR_ICMS")
    private Long valorIcms;
    @Column(name = "BASE_CALCULO_ICMS_ST")
    private Long baseCalculoIcmsSt;
    @Column(name = "VALOR_ICMS_SUBSTITUICAO")
    private Long valorIcmsSubstituicao;
    @Column(name = "VALOR_TOTAL_PRODUTOS")
    private Long valorTotalProdutos;
    @Column(name = "VALOR_FRETE")
    private Long valorFrete;
    @Column(name = "VALOR_SEGURO")
    private Long valorSeguro;
    @Column(name = "VALOR_OUTRAS_DESPESAS")
    private Long valorOutrasDespesas;
    @Column(name = "VALOR_TOTAL_IPI")
    private Long valorTotalIpi;
    @Column(name = "VALOR_TOTAL_NFE")
    private Long valorTotalNfe;
    @Column(name = "VALOR_TOTAL_DESCONTOS")
    private Long valorTotalDescontos;
    @Column(name = "VALOR_TOTAL_II")
    private Long valorTotalIi;
    @Column(name = "VALOR_PIS")
    private Long valorPis;
    @Column(name = "VALOR_COFINS")
    private Long valorCofins;
    @Column(name = "DATA_ENTRADA")
    @Temporal(TemporalType.DATE)
    private Date dataEntrada;
    @Column(name = "EXCLUIDA")
    private Character excluida;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNfeEntradaCabecalho")
    private List<NfeEntradaDetalhe> nfeEntradaDetalheList = new ArrayList<>();;
    @JoinColumn(name = "ID_FORNECEDOR", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Fornecedor idFornecedor = new Fornecedor();

    public NfeEntradaCabecalho() {
    }

    public NfeEntradaCabecalho(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNumeroNfe() {
        return numeroNfe;
    }

    public void setNumeroNfe(String numeroNfe) {
        this.numeroNfe = numeroNfe;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }

    public Date getDataEmissao() {
        return dataEmissao;
    }

    public void setDataEmissao(Date dataEmissao) {
        this.dataEmissao = dataEmissao;
    }

    public Long getVolumeQtd() {
        return volumeQtd;
    }

    public void setVolumeQtd(Long volumeQtd) {
        this.volumeQtd = volumeQtd;
    }

    public String getEspecieVolume() {
        return especieVolume;
    }

    public void setEspecieVolume(String especieVolume) {
        this.especieVolume = especieVolume;
    }

    public Long getPesoLiquido() {
        return pesoLiquido;
    }

    public void setPesoLiquido(Long pesoLiquido) {
        this.pesoLiquido = pesoLiquido;
    }

    public Long getPesoBruto() {
        return pesoBruto;
    }

    public void setPesoBruto(Long pesoBruto) {
        this.pesoBruto = pesoBruto;
    }

    public String getChaveAcesso() {
        return chaveAcesso;
    }

    public void setChaveAcesso(String chaveAcesso) {
        this.chaveAcesso = chaveAcesso;
    }

    public Date getDataSaida() {
        return dataSaida;
    }

    public void setDataSaida(Date dataSaida) {
        this.dataSaida = dataSaida;
    }

    public Long getBaseCalculoIcms() {
        return baseCalculoIcms;
    }

    public void setBaseCalculoIcms(Long baseCalculoIcms) {
        this.baseCalculoIcms = baseCalculoIcms;
    }

    public Long getValorTotalFrete() {
        return valorTotalFrete;
    }

    public void setValorTotalFrete(Long valorTotalFrete) {
        this.valorTotalFrete = valorTotalFrete;
    }

    public Long getValorIcms() {
        return valorIcms;
    }

    public void setValorIcms(Long valorIcms) {
        this.valorIcms = valorIcms;
    }

    public Long getBaseCalculoIcmsSt() {
        return baseCalculoIcmsSt;
    }

    public void setBaseCalculoIcmsSt(Long baseCalculoIcmsSt) {
        this.baseCalculoIcmsSt = baseCalculoIcmsSt;
    }

    public Long getValorIcmsSubstituicao() {
        return valorIcmsSubstituicao;
    }

    public void setValorIcmsSubstituicao(Long valorIcmsSubstituicao) {
        this.valorIcmsSubstituicao = valorIcmsSubstituicao;
    }

    public Long getValorTotalProdutos() {
        return valorTotalProdutos;
    }

    public void setValorTotalProdutos(Long valorTotalProdutos) {
        this.valorTotalProdutos = valorTotalProdutos;
    }

    public Long getValorFrete() {
        return valorFrete;
    }

    public void setValorFrete(Long valorFrete) {
        this.valorFrete = valorFrete;
    }

    public Long getValorSeguro() {
        return valorSeguro;
    }

    public void setValorSeguro(Long valorSeguro) {
        this.valorSeguro = valorSeguro;
    }

    public Long getValorOutrasDespesas() {
        return valorOutrasDespesas;
    }

    public void setValorOutrasDespesas(Long valorOutrasDespesas) {
        this.valorOutrasDespesas = valorOutrasDespesas;
    }

    public Long getValorTotalIpi() {
        return valorTotalIpi;
    }

    public void setValorTotalIpi(Long valorTotalIpi) {
        this.valorTotalIpi = valorTotalIpi;
    }

    public Long getValorTotalNfe() {
        return valorTotalNfe;
    }

    public void setValorTotalNfe(Long valorTotalNfe) {
        this.valorTotalNfe = valorTotalNfe;
    }

    public Long getValorTotalDescontos() {
        return valorTotalDescontos;
    }

    public void setValorTotalDescontos(Long valorTotalDescontos) {
        this.valorTotalDescontos = valorTotalDescontos;
    }

    public Long getValorTotalIi() {
        return valorTotalIi;
    }

    public void setValorTotalIi(Long valorTotalIi) {
        this.valorTotalIi = valorTotalIi;
    }

    public Long getValorPis() {
        return valorPis;
    }

    public void setValorPis(Long valorPis) {
        this.valorPis = valorPis;
    }

    public Long getValorCofins() {
        return valorCofins;
    }

    public void setValorCofins(Long valorCofins) {
        this.valorCofins = valorCofins;
    }

    public Date getDataEntrada() {
        return dataEntrada;
    }

    public void setDataEntrada(Date dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

    public Character getExcluida() {
        return excluida;
    }

    public void setExcluida(Character excluida) {
        this.excluida = excluida;
    }

    public List<NfeEntradaDetalhe> getNfeEntradaDetalheList() {
        return nfeEntradaDetalheList;
    }

    public void setNfeEntradaDetalheList(List<NfeEntradaDetalhe> nfeEntradaDetalheList) {
        this.nfeEntradaDetalheList = nfeEntradaDetalheList;
    }

    public Fornecedor getIdFornecedor() {
        return idFornecedor;
    }

    public void setIdFornecedor(Fornecedor idFornecedor) {
        this.idFornecedor = idFornecedor;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof NfeEntradaCabecalho)) {
            return false;
        }
        NfeEntradaCabecalho other = (NfeEntradaCabecalho) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.classes.NfeEntradaCabecalho[ id=" + id + " ]";
    }
    
}
